{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 Monaco;}
{\colortbl;\red255\green255\blue255;\red196\green26\blue22;\red0\green0\blue153;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid3}
{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid4}
{\list\listtemplateid5\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid5}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}}
\margl1440\margr1440\margb1800\margt1800\vieww15840\viewh15380\viewkind0
\deftab720
\pard\tqr\tx9360\pardeftab720\ql\qnatural\pardirnatural

\f0\b\fs40 \cf0 \expnd0\expndtw0\kerning0
S
\b0 \expnd0\expndtw0\kerning0
tudent 
\b \expnd0\expndtw0\kerning0
C
\b0 \expnd0\expndtw0\kerning0
omputing 
\b \expnd0\expndtw0\kerning0
U
\b0 \expnd0\expndtw0\kerning0
ser 
\b \expnd0\expndtw0\kerning0
B
\b0 \expnd0\expndtw0\kerning0
oot 
\b \expnd0\expndtw0\kerning0
A
\b0 \expnd0\expndtw0\kerning0
ssistant
\b \expnd0\expndtw0\kerning0
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural

\b0\fs22 \cf0 \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
	This is a project by Stanford's Sudent Computing Department to come up with a replacement for Mike Bombich's "BootPicker" that is more tailored to the departments needs. Those specific needs are:\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
Have the "Boot into Windows" window not cover up the loginwindow.\
Allow a server to override the preferences and turn off one OS or the other (hiding the window, or causing the computer to reboot into Windows).\
Better match the pGinga system we are creating on Windows\
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
	This project will wind up consisting of three parts. This code on the Macintosh side, a matching bit of code on the Windows side, and a EFI boot layer that will arbitrate between them. The latter two are in-progress.\
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural

\b \cf0 \expnd0\expndtw0\kerning0
Features\
\
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\ls1\ilvl0
\b0 \cf0 \kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Checks in with a server to see if the OS chooser window should be visible\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Configurable with a plist (edu.stanford.stucomp.bootpicker.plist)\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Includes a preference manifest file for easy administration with Workgroup Manager.\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
A delay between the first click and the actual reboot to allow the user to cancel.\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Holding down the shift key while clicking on the button avoids the delay.\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Automatic resizing of the window to match the loginwindow (with some manual settings)\
\ls1\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Resizing of the window to fit the screen\
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural

\b \cf0 \expnd0\expndtw0\kerning0
Server Configuration\
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
	
\b0 \expnd0\expndtw0\kerning0
When configured to do so the program looks to a file served by a web server to tell it what to do. The format of the web page is very simple:\
\
\pard\tx480\pardeftab720\ql\qnatural\pardirnatural

\f1\fs18 \cf2 \expnd0\expndtw0\kerning0
\CocoaLigature0 WindowsAllowed=False\
MacOSXAllowed=True\
\pard\tx480\pardeftab720\ql\qnatural\pardirnatural

\f0\b\fs22 \cf0 \expnd0\expndtw0\kerning0
\CocoaLigature1 \
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural

\b0 \cf0 \expnd0\expndtw0\kerning0
	The order of the lines does not matter, and other things can be in the file, but these two lines have to be by themselves. There also cannot be any white-space on the line.\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural

\b \cf0 \expnd0\expndtw0\kerning0
\
Local Configuration
\b0 \expnd0\expndtw0\kerning0
\
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
	Local configuration is all done in a plist file:\
\
/Library/Preferences/edu.stanford.stucomp.SCUBA.plist\
\
	All of the following configurations live at the top-level of the file (this may change):\
\
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\ls2\ilvl0\cf0 \kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
justTesting (default False) - When set to True this causes the window to always display, and turns off the ability to reboot.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
serverAddress - The complete URL for the server to check. If this is empty it will not check in, but the Window will still be displayed.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
ignoreServer - If this is set, then the server will be ignored. The window will be displayed.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
secondsBetweenChecks (default 300) - The number of seconds between checks with the server.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
logHearbeat (default False) - When enabled the program will send a \'93hearbeat\'94 message to the System Log every time it checks in with the server. Useful in debugging.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
windowsTargetVolume (default /dev/disk0s3) - The disk slice that Windows is on. This will be checked to make sure that it looks like a Windows volume, but this program cannot be certain that it is really bootable.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
imageNameOrLocation (default WindowsLogoBoot) - The name or full path to an image to use in the main window. If you are using the path, then it must be a full path (not relative), and must include the file extension. If it is a name, then it must be in the Resources folder of the application, and the name should not have the file extension attached.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
topMessage and bottomMessage - The messages displayed on the main window.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
popupTitle and popupMessage - The text displayed on the alert sheet when the icon is clicked.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
popupSeconds - The number of seconds between the time the icon is clicked, and the automatic reboot. Note that it does not display a count-down.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
loginwindowTextLines - The number of lines of text that are shown at the loginwindow. If there are no lines, this is automatically detected. At some point in the future this might be fully automatic.\
\ls2\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
loginwindowUsersDisplayed - The number of users displayed at the loginwindow. At some point in the future this might be fully automatic.\
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural

\b \cf0 \expnd0\expndtw0\kerning0
Miscellaneous Notes\
\
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\ls3\ilvl0
\b0 \cf0 \kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
The application is launched by a launchd plist. This is required to be in /Library/LaunchAgents with the proper permissions.\
\ls3\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
The preference file ships in \'93justTesting\'94 mode. This will not reboot the computer.\
\ls3\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
The included .packproj file is a Iceberg file. Install Iceberg and this will help you create the appropriate .mpkg to install the program on client computers (hint: it will put its completed files in the build directory)
\b \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
Future Directions\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural

\b0 \cf0 \expnd0\expndtw0\kerning0
\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
	The project is not complete, and there are a few things we need to add:\
\
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\ls4\ilvl0\cf0 \kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Finish the Windows-side component to match this MacOS X one.\
\ls4\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Finish an EFI layer that will be used to decide what OS to boot to initially (this will also do the work of helping the Windows side set the boot OS)\
\ls4\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Reset the \'93boot to windows\'94 code to use this system.\
\ls4\ilvl0\kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Create code that would do a better job of checking the partitions for bootable OSs.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \
	There are some additional things that would not be used at Stanford StuComp, but might eventually make it in. I can\'92t make any promises about these:\
\
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\li720\fi-720\ql\qnatural\pardirnatural
\ls5\ilvl0\cf0 \kerning1\expnd0\expndtw0 {\listtext	\'95	}\expnd0\expndtw0\kerning0
Allow for two separate windows that would boot into two OSs.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardeftab720\ql\qnatural\pardirnatural

\b \cf0 \expnd0\expndtw0\kerning0
Author\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ql\qnatural\pardirnatural
\cf0 \expnd0\expndtw0\kerning0
	
\b0 \expnd0\expndtw0\kerning0
Karl Kuehn - Mac Image Developer - Stanford University - Student Computing\
	{\field{\*\fldinst{HYPERLINK "mailto:larkost@stanford.edu"}}{\fldrslt \cf3 \expnd0\expndtw0\kerning0
\ul \ulc3 larkost@stanford.edu}}}